﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using App_Persistencia;
using System.Data;

namespace App_Negocio
{
    public class Empleado
    {
        private int empleadoId;

        public int EmpleadoId
        {
            get { return empleadoId; }
            set { empleadoId = value; }
        }

        private string nomEmpleado;

        public string NomEmpleado
        {
            get { return nomEmpleado; }
            set { nomEmpleado = value; }
        }

        private string apeEmpleado;

        public string ApeEmpleado
        {
            get { return apeEmpleado; }
            set { apeEmpleado = value; }
        }

        private string email;

        public string Email
        {
            get { return email; }
            set { email = value; }
        }

        private int telEmpleado;

        public int TelEmpleado
        {
            get { return telEmpleado; }
            set { telEmpleado = value; }
        }

        private string sexo;

        public string Sexo
        {
            get { return sexo; }
            set { sexo = value; }
        }

        private int nroDocEmpleado;

        public int NroDocEmpleado
        {
            get { return nroDocEmpleado; }
            set { nroDocEmpleado = value; }
        }

        private Tipo_Documento docTipo;

        public Tipo_Documento DocTipo
        {
            get { return docTipo; }
            set { docTipo = value; }
        }

        private string calleDirEmpleado;

        public string CalleDirEmpleado
        {
            get { return calleDirEmpleado; }
            set { calleDirEmpleado = value; }
        }

        private int nroDirEmpleado;

        public int NroDirEmpleado
        {
            get { return nroDirEmpleado; }
            set { nroDirEmpleado = value; }
        }

        private int pisoDirEmpleado;

        public int PisoDirEmpleado
        {
            get { return pisoDirEmpleado; }
            set { pisoDirEmpleado = value; }
        }

        private string deptoDirEmpleado;

        public string DeptoDirEmpleado
        {
            get { return deptoDirEmpleado; }
            set { deptoDirEmpleado = value; }
        }

        DateTime fechaAlta;

        public DateTime FechaAlta
        {
            get { return fechaAlta; }
            set { fechaAlta = value; }
        }

        DateTime fechaBaja;

        public DateTime FechaBaja
        {
            get { return fechaBaja; }
            set { fechaBaja = value; }
        }

        string motivoBaja;

        public string MotivoBaja
        {
            get { return motivoBaja; }
            set { motivoBaja = value; }
        }

        private Barrio bar;

        public Barrio Bar
        {
            get { return bar; }
            set { bar = value; }
        }

        private Usuario usuario;

        public Usuario Usuario
        {
            get { return usuario; }
            set { usuario = value; }
        }

        Empleado_Tipo tipoEmpleado = new Empleado_Tipo();

        public Empleado_Tipo TipoEmpleado
        {
            get { return tipoEmpleado; }
            set { tipoEmpleado = value; }
        }

        public void cargarEmpleado()
        {
            Empleado_Data empData = new Empleado_Data();
            empData.Usuario = new Usuario_Data();

            empData.Usuario.NomUsuario = Usuario.NomUsuario;
            empData.Usuario.Password = Usuario.Password;

            empData.NomEmpleado = NomEmpleado;
            empData.ApeEmpleado = ApeEmpleado;
            empData.Email = Email;
            empData.TelEmpleado = TelEmpleado;
            empData.Sexo = Sexo;
            empData.NroDocEmpleado = NroDocEmpleado;
            empData.DocTipo = new Tipo_Docmento_Data();
            empData.DocTipo.Id = DocTipo.Id;
            empData.CalleDirEmpleado = CalleDirEmpleado;
            empData.NroDirEmpleado = NroDirEmpleado;
            empData.PisoDirEmpleado = PisoDirEmpleado;
            empData.DeptoDirEmpleado = DeptoDirEmpleado;
            empData.FechaAlta = FechaAlta;
            empData.Bar = new Barrio_Data();
            empData.Bar.Id = Bar.Id;
            empData.TipoEmpleado = new Empleado_Tipo_Data();
            empData.TipoEmpleado.Id = TipoEmpleado.Id;

            empData.CargarEmpleado();

        }

        public LinkedList<Empleado> buscarEmpleadoxArea(int area)
        {
            Empleado_Data emp = new Empleado_Data();

            DataTable dataTable = emp.buscarEmpleadoxArea(area);

            LinkedList<Empleado> lista = new LinkedList<Empleado>();
            Empleado item = null;
            foreach (DataRow dr in dataTable.Rows)
            {
                item = new Empleado();
                App_Negocio.Empleado_Tipo empTipo = new Empleado_Tipo();
                item.apeEmpleado = (dr["Apellido"].ToString());
                item.nomEmpleado = (dr["Nombre"].ToString());
                item.empleadoId = int.Parse((dr["EmpId"].ToString()));
                empTipo.Nombre = (dr["TipoEmpleado"].ToString());
                empTipo.PrecioxEvento = float.Parse((dr["Costo"].ToString()));
                item.TipoEmpleado = empTipo;


                lista.AddLast(item);
            }

            return lista;
        }

        public DataTable buscarEmpleadoxEvento(int idEvento)
        {
            Empleado_Data emp = new Empleado_Data();
            DataTable tabla = emp.buscarEmpleadoxEvento(idEvento);
            return tabla;

        }

    }
}
